
struct OTreeDBObject {
  OTreeNode oNode;
  MTreeNode mNode;
  BTreeNode bNode;
  void * object;
}

/** Sometimes, multiple objects need to be associated with each other.
    These objects do not necessarily belong in the same place in the
    tree.  (For example, bonds and atoms).  The OTreeDBObject.object
    field should point to one of these in that case.
*/


struct OTreeDBObjectLinker {
  struct OTreeDBObject *  oTreeDBObjects;
  void ** objects;
  int[] types;
} 


/**
   Sometimes, different nodes in OTrees correspond to each other also.
   The OTreeNode.metaData field would point here in this case.
**/
struct OTreeNodeLinker {
  List nodes; //OTreeNode
  List metaData;
  List types; //int
}
